// 全局的混入内容
export default {
  data() {
    return {}
  },
  methods: {
    // 权限拦截校验的方法
    // url跳转地址；needLogin是否需要登录；isSwitch是否为tabBar界面
    goUrl(url, needLogin = false, isSwitch = false) {
      // 如果需要登录我们就判断
      if (needLogin) {
        const token = uni.getStorageSync('token')
        if (!token) {
          // 没有，就提示
          return uni.showToast({
            title: '请登录',
            icon: 'none'
          })
        }
      }
      // 跳转，判断是否为tabBar界面
      if (isSwitch) {
        uni.switchTab({
          url
        })
      } else {
        uni.navigateTo({
          url
        })
      }
    },
    // 微信支付的方法
    async weixinPay(orderId) {
      // 1.发起预请求，提交订单ID给后端，后端会返回支付所需要的相关加密参数
      let {
        pay_data
      } = await uni.$http.get('/pay/preWeixinPay', {
        params: {
          orderId
        }
      })
      // pay_data就是支付所需要的相关加密参数
      // console.log(res);
      // 2.调用uni.requestPayment()方法，如果是原生微信小程序调用wx.requestPayment
      // uni.requestPayment是uniApp封装的一个支付方法，他还是实现支付宝支付，微信支付，H5网页支付，网银支付
      // 查询文档https://uniapp.dcloud.net.cn/api/plugins/payment.html#requestpayment
      // uni.requestPayment会唤醒你的微信支付，让你输入密码，输入结束之后成功就走success，失败就走fail
      uni.requestPayment({
        provider: 'wxpay',
        timeStamp: pay_data.timeStamp,
        nonceStr: pay_data.nonceStr,
        package: pay_data.package,
        signType: pay_data.signType,
        paySign: pay_data.paySign,
        success: res => {
          // 支付成功就走这里
          // 3.支付成功，有时候我们还会再向我们的后端发送一个请求，确认订单状态来对应支付成功【确认请求】
          uni.redirectTo({
            url: '/pkgOrder/payOnlineResult/payOnlineResult?status=1&order_id=' + orderId,
          })
        },
        fail: err => {
          // 支付失败就走这里
          uni.redirectTo({
            url: '/pkgOrder/payOnlineResult/payOnlineResult?status=1&order_id=' + orderId,
          })
        }
      })
    }
  }
}
